加载样本数据集
scikit-learn带有一些标准的数据集,例如用于分类的iris和digit数据集和用于回归的 boston house prices dataset .
下面,我们打开Python编译器,然后载入iris和digits数据集。我们的符号’$’表示shell提示,’>>>’表示python编译器提示
|
|
在digits数据集情况下,digits.data提供了可用于分类数字样本。
|
|
并且digits.target给出了digit数据集的真实结果,这些数字是和我们正在学习的每个数字图像相关的数字。
|
|
数据总是一些2D数组,shape(n_samples,n_features),尽管原始数据也许有一个不同的形状,就这个digits而言,每一个原始样例是一个shape(8,8)的图像,并且能被访问使用:
学习和预测
在digits数据集中,给定一幅手写数字的数字图像,任务是预测结果。我们给定的样本有10种类别(是数字0到9),基于此我们建立一个估计方法能够预测我们没有见过的样本属于哪一类。
在scikit-learn中,用于分类的估计模型是一个实现了fit(x,y)方法和predict(T)方法的Python对象。
估计模型的例子是在实现了support vector classification支持向量机的类 sklearn.svm.SVC。估计模型的构造函数带有模型参数,但是目前,我们将估计模型当做一个黑盒子。
|
|
选择模型参数
在这个例子中,我们这设定了gamma值。可以通过使用网格搜索和交叉验证自动的找出最好的参数值
我们把我们的评估模型命名为clf,作为一个分类器,它现在必须拟合这个模型,也就是它必须从这个模型学习。我们通过将数据集传递给fit函数完成。作为训练集,除了最后一个样本,我们选择其余的所有样本。通过python语句[:-1]选择样本,这条语句将从digits.data中产生一个除了最后一个样本的新数组
|
|
现在,我们可以预测新值,尤其是我们可以问分类器在digits数据集中的用来训练分类器时没有使用的最后一个数据是数字几
一个完整的分类问题实例可以通过下面的链接下载,用来作为你运行并且学习的例子 Recognizing hand-written digits
模型持久化
可以通过使用python的built-in持久化模型在scikit中保存一个模型,命名pickle:
在scikit的特别情况下,使用joblib替换pickle(joblib.dump & joblib.load)会更有趣,它在大数据上是更有效的,但是仅仅只能存入的是字典而不是字符串。
|
|
然后你就可以读取上面的pickled模型使用了(通常是在其它的Python程序中):
|
|
本文总阅读量 次
本文由 Yu Zhang 发表于 Yu Zhang's Blog ,采用署名-非商业性使用-禁止演绎 3.0进行许可。
非商业转载请注明作者及出处。商业转载请联系作者本人。